insightwatchのセキュリティチェックでオールグリーンを目指す(その4: CISベンチマーク最終回 ネットワーク編)
オペレーション部 江口です。 このところ「insightwatchのセキュリティチェックでオールグリーンを目指す」という取り組みをずっとやっています。 今回でシリーズの第4回です。
第1回:
第2回:
第3回:
ここまでCISベンチマークの対処に取り組み、前回までで「CIS 3. Monitoring」までの対処を完了しています。 CISの残りは「4. Networking」だけとなりました。ゴールが近いですね!
最初のチェック結果
対処前のCIS 4. Networkingのチェック結果は下記の通りです。見ての通り項目は4つのみ、指摘も4.3と4.4の2つだけでした。
以下、指摘事項への対処です。
CIS 4.3 defaultセキュリティグループが全ての通信を許可していないこと
defaultセキュリティグループにはルールを設定しない、というポリシーです。 それでは利用できないではないか、と思うかもしれませんが、そもそもdefaultセキュリティグループは利用すべきではなく、必要な通信を許可したセキュリティグループをそれぞれ設定すべき、という考えのようです。間違ってdefaultセキュリティグループをアタッチしてしまった時に意図しない通信が行われないよう、ルールを削除して通信全拒否の状態にしておきましょう、ということですね。
さて、問題は全リージョンのdefaultセキュリティグループでインバウンドのルールが標準で設定されていたということです。おかげで修正が必要な場所としてがっつり全リージョンが出てきました・・・
ということで、全リージョンのdefaultセキュリティグループのルールをがっつり消すPythonスクリプトを作成して一気に削除しました。 容赦なくインバウンド/アウトバウンドの全ルールを削除するので、実行する時はくれぐれもどこかのEC2インスタンスにアタッチされていないか確認をお願いします。
#!/usr/local/bin/python3 import boto3 import json target_group_name = 'default' #設定を変更するセキュリティグループ #リージョン情報取得 def get_region_list(): client = boto3.client('ec2') return [region['RegionName'] for region in client.describe_regions()['Regions']] #ルール削除処理 def delete_default_sg_rules(region): ec2 = boto3.client('ec2', region_name=region) #セキュリティグループの情報の取得 sgs = ec2.describe_security_groups()['SecurityGroups'] #上記で取得したデータから、ターゲットのセキュリティグループの情報をフィルタ sgs = list(filter(lambda sgs: sgs['GroupName'] == target_group_name, sgs))[0] ingress_rules = (sgs['IpPermissions']) #インバウンドルールの情報 egress_rules = (sgs['IpPermissionsEgress']) #アウトバウンドルールの情報 #インバウンドルールの削除 for rule in ingress_rules: response = ec2.revoke_security_group_ingress( GroupId=sgs['GroupId'], GroupName=sgs['GroupName'], IpPermissions=[rule] ) #アウトバウンドルールの削除 for rule in egress_rules: response = ec2.revoke_security_group_egress( GroupId=sgs['GroupId'], IpPermissions=[rule] ) # main if __name__ == "__main__": regions = get_region_list() for region in regions: print(region) delete_default_sg_rules(region)
CIS 4.4 必要最低限のVPCピアリング用のルーティングを追加すること
VPCピアリングを設定した際、最低限の通信のみ許可するように(例えば不要なサブネットやホストの通信は拒否するように)ルーティングを設定しましょう、というポリシーです。 この項目は、ユーザが自分で確認・評価を行って評価結果を登録する「マニュアル評価項目」となっています。
マニュアル評価項目: https://insightwatch.zendesk.com/hc/ja/articles/360021813891
この環境ではVPCピアリング自体を行なっていないので、このポリシーは該当しません。念の為ルートテーブルに余計なポリシーが含まれていないかを確認した後、「評価済み」ということで登録を実施しました。
これで、次回のチェック時はこの項目は「正常」として評価されます。
ここまでの結果
ここまでの結果で、CISベンチマークの指摘事項はなくなり、チェック結果の画面で「異常は検出されませんでした」というメッセージを見ることができました!
というわけでCISベンチマークへの対処は今回で完了となります。 しかしinsightwatchでチェックできるのは、このCISベンチマーク以外にも「AWS Checklist」と「IAM Best Practice」があります。 それらでまだ「重要」の指摘が14残っている状態となっています。
引き続きこれらの対処を行なっていこうと思います。
以上、「insightwatchのセキュリティチェックでオールグリーンを目指す」シリーズの第4回でした。